package com.hxzy.shop.utils;

import java.math.BigDecimal;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Scanner;

/**
 * 创建人 ： wq
 * 创建时间 ： 2022年11月04日 14:47
 * 功能描述 ： GenRedPacketUtils  红包工具类
 */
public class GenRedPacketUtils {
    static ArrayList<BigDecimal> list = new ArrayList<BigDecimal>();

    public static BigDecimal bianLiJia(ArrayList<BigDecimal> list) {
        BigDecimal b = new BigDecimal("0");
        for (int i = 0; i < list.size(); i++) {
            b = b.add(list.get(i));
        }
        return b;
    }

    public static void bianLiJian(BigDecimal b1, BigDecimal b2) {
        if (bianLiJia(list).doubleValue() < b1.doubleValue()) {
            BigDecimal b3 = bianLiJia(list);
            BigDecimal b4 = b1.subtract(b3);
            int i = 0;
            list.set(i = (int) (Math.random() * (b2.intValue())), list.get(i).add(b4));
        } else if (bianLiJia(list).doubleValue() > b1.doubleValue()) {
            BigDecimal b3 = bianLiJia(list);
            BigDecimal b4 = b3.subtract(b1).divide(b2, 2, BigDecimal.ROUND_FLOOR);
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i).doubleValue() > b4.doubleValue()) {
                    list.set(i, list.get(i).subtract(b4));
                }
            }
        }
        if (bianLiJia(list).doubleValue() > b1.doubleValue()) {
            BigDecimal b3 = bianLiJia(list);
            BigDecimal b4 = b3.subtract(b1);
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i).doubleValue() > b4.doubleValue()) {
                    list.set(i, list.get(i).subtract(b4));
                }
            }
            bianLiJian(b1, b2);
        }
    }

    public static ArrayList<BigDecimal> genRedPacket(BigDecimal total, int count) {

        BigDecimal b2 = new BigDecimal(count);
        for (int i = 0; i < count; i++) {
            String s = String.valueOf(((int) (Math.random() * (total.intValue() + 1)))
                    + ((int) (Math.random() * 100) + 1) / 100.0);
            BigDecimal b3 = new BigDecimal(s);
            list.add(b3);
        }
        bianLiJian(total, b2);
        return list;
    }

    public void fhb(BigDecimal total, int count) {
        genRedPacket(total, count);
        int i = 1;
        for (BigDecimal b : list) {
            System.out.println("第" + i + "个红包:" + b + "元");
            i++;
        }
    }


    public static void main(String[] args) throws ParseException {
        Scanner scanner = new Scanner(System.in);
        GenRedPacketUtils dp = new GenRedPacketUtils();
        System.out.print("请输入要发红包金额与个数：");
        String s1 = scanner.next();
        int a1 = scanner.nextInt();
        dp.fhb(new BigDecimal(s1), a1);
    }

}